home *** CD-ROM | disk | FTP | other *** search
/ ...taking it to the Macs! / ...taking it to the Macs!.iso / Extras / ActiveX Mac SDK / ActiveX SDK / Container Common / CBindHost.h < prev    next >
Text File  |  1997-01-03  |  3KB  |  104 lines

  1. class CBindHost;
  2.  
  3. class CBindHostBSC : public IBindStatusCallback
  4. {
  5. public:
  6.     /************* CBindHostBSC methods **************/
  7.     CBindHostBSC(CBindHost* pBindHost, IBindStatusCallback *pClientBSC);
  8.     ~CBindHostBSC();
  9.  
  10.     HRESULT Abort(void);
  11.  
  12.  
  13.     /************** IUnknown methods ***************/
  14.     STDMETHOD(QueryInterface)(REFIID riid, void **ppvObjOut);
  15.     STDMETHOD_(ULONG, AddRef)();
  16.     STDMETHOD_(ULONG, Release)();
  17.  
  18.     /************** IBindStatusCallback methods *************/
  19.     STDMETHOD(OnStartBinding)(
  20.         /* [in] */ DWORD grfBSCOption,
  21.         /* [in] */ IBinding *pib);
  22.  
  23.     STDMETHOD(GetPriority)(
  24.         /* [out] */ LONG *pnPriority);
  25.  
  26.     STDMETHOD(OnLowResource)(
  27.         /* [in] */ DWORD reserved);
  28.  
  29.     STDMETHOD(OnProgress)(
  30.         /* [in] */ ULONG ulProgress,
  31.         /* [in] */ ULONG ulProgressMax,
  32.         /* [in] */ ULONG ulStatusCode,
  33.         /* [in] */ LPCOLESTR szStatusText);
  34.  
  35.     STDMETHOD(OnStopBinding)(
  36.         /* [in] */ HRESULT hresult,
  37.         /* [in] */ LPCOLESTR szError);
  38.  
  39.     STDMETHOD(GetBindInfo)(
  40.         /* [out] */ DWORD *grfBINDINFOF,
  41.         /* [unique][out][in] */ BINDINFO *pbindinfo);
  42.  
  43.     STDMETHOD(OnDataAvailable)(
  44.         /* [in] */ DWORD grfBSCF,
  45.         /* [in] */ DWORD dwSize,
  46.         /* [in] */ FORMATETC *pformatetc,
  47.         /* [in] */ STGMEDIUM *pstgmed);
  48.  
  49.     STDMETHOD(OnObjectAvailable)(
  50.         /* [in] */ REFIID riid,
  51.         /* [iid_is][in] */ IUnknown *punk);
  52.  
  53. private:
  54.     LPBINDING                        m_pBinding;
  55.     IBindStatusCallback*            m_pClientBSC;
  56.     IBindCtx*                        m_pbc;
  57.     CBindHost*                        m_pBindHost;
  58.     DWORD                            m_RefCount;
  59. };
  60.  
  61. class CBindHost : public IBindHost
  62. {
  63. public:
  64.     /************* CBindHostBSC methods **************/
  65.     CBindHost(CXSite* pSite);
  66.     ~CBindHost();
  67.     
  68.     // IUnknown methods
  69.     STDMETHOD (QueryInterface)(REFIID riid, LPVOID *ppvObj);
  70.     STDMETHOD_(ULONG,AddRef)();
  71.     STDMETHOD_(ULONG,Release)();
  72.     
  73.     //  *** IBindHost methods ***
  74.     STDMETHOD (CreateMoniker) (LPOLESTR szName, IBindCtx   *pBC, IMoniker**  ppmk, DWORD dwReserved);
  75.     STDMETHOD (MonikerBindToStorage) (IMoniker *pMk, IBindCtx *pBC, IBindStatusCallback *pBSC,
  76.                                     REFIID riid, void  **ppvObj);
  77.     STDMETHOD (MonikerBindToObject) (IMoniker *pMk, IBindCtx *pBC, IBindStatusCallback *pBSC,
  78.                                         REFIID riid, void **ppvObj);
  79.         // helper for above : monikerbind to object and storage.
  80.     STDMETHODIMP MonikerBind(
  81.             IMoniker *pMk,
  82.             IBindCtx *pBC,
  83.             IBindStatusCallback *pBSC,
  84.             REFIID riid,
  85.             void **ppvObj,
  86.             BOOL fObject);
  87.     HRESULT AddClient(IBindStatusCallback *pClientBSC, CBindHostBSC **ppBSCHook);
  88.     HRESULT RemoveClient(CBindHostBSC *pBSCHook);
  89.     HRESULT AbortBindings();
  90.     
  91. protected:
  92.     void             AddBSC(CBindHostBSC *Host);
  93.     void             RemoveBSC(CBindHostBSC *Host);
  94.     unsigned long     GetCount(void);
  95.     unsigned long     FindBSC(CBindHostBSC* Host);
  96.     CBindHostBSC*     GetBSC(unsigned long Index);
  97.  
  98.     DWORD            mRefCount;     // Reference count
  99.     CXSite*            mSite;        // Aggregator Unknown.
  100.     LArray*            mBSCList;    // list of BisdStatusCallbacks, one for each stream
  101.  
  102. };
  103.  
  104.